import { defineStore } from 'pinia'
import { ref } from 'vue'

interface UrlParams {
  token: string
  deptSn: string
  number: string
}

export const useUrlParamsStore = defineStore('urlParams', () => {
  // 状态
  const params = ref<UrlParams>({
    token: '',
    deptSn: '',
    number: ''
  })

  // 从 URL 获取参数
  const getParamsFromUrl = () => {
    try {
      // 获取当前 URL
      const url = window.location.href

      // 解析 URL 参数
      const urlParams = new URLSearchParams(window.location.search)

      // 获取 hash 部分
      const hash = window.location.hash

      // 更新状态
      params.value = {
        token: urlParams.get('token') || '',
        deptSn: urlParams.get('deptSn') || '',
        number: urlParams.get('number') || ''
      }

      return params.value
    } catch (error) {
      console.error('获取 URL 参数失败：', error)
      return null
    }
  }

  // 更新参数
  const updateParams = (newParams: Partial<UrlParams>) => {
    params.value = {
      ...params.value,
      ...newParams
    }
  }

  // 清空参数
  const clearParams = () => {
    params.value = {
      token: '',
      deptSn: '',
      number: ''
    }
  }

  return {
    params,
    getParamsFromUrl,
    updateParams,
    clearParams
  }
})
